package com.fufan.mtsaas.modules.newtech.xjstech.service;

import com.baomidou.mybatisplus.service.IService;
import com.fufan.mtsaas.modules.common.bo.response.RequestPojo;
import com.fufan.mtsaas.modules.common.bo.response.Result;
import com.fufan.mtsaas.modules.newtech.xjstech.bo.request.*;
import com.fufan.mtsaas.modules.newtech.xjstech.bo.response.XjsDeptInfoResponse;
import com.fufan.mtsaas.modules.newtech.xjstech.bo.response.XjsTechResponse;
import com.fufan.mtsaas.modules.newtech.xjstech.bo.response.XjsTechTotal;
import com.fufan.mtsaas.modules.newtech.xjstech.bo.response.XjsThisUserInfo;
import com.fufan.mtsaas.modules.newtech.xjstech.model.XjsTech;

import javax.servlet.http.HttpServletResponse;

/**
 * 服务类
 *
 * @author Liby
 * @since 2024-12-16
 */
public interface XjsTechSvc extends IService<XjsTech> {
    Result<XjsTechResponse> doQueryPage(XjsTechQueryRequest map, RequestPojo requestPojo);

    Result<XjsThisUserInfo> doThisUserInfo(RequestPojo requestPojo);

    Result<XjsDeptInfoResponse> doDeptInfo(XjsTechIdRequest map);

    Result<XjsTech> doSave(XjsTechSaveRequest entity, RequestPojo requestPojo);

    Result doUpdate(XjsTechSaveRequest entity, RequestPojo requestPojo);

    Result doDelete(XjsTechDeleteRequest map, RequestPojo requestPojo);

    Result doDetail(XjsTechQueryByIdRequest map, RequestPojo requestPojo);

    Result doMyDraftQuery(XjsTechQueryRequest map, RequestPojo requestPojo);

    Result doOpenedProjectQuery(XjsTechQueryRequest map, RequestPojo requestPojo);

    Result doExportOpenedProject(XjsTechQueryRequest map, RequestPojo requestPojo, HttpServletResponse response);

    Result doPendingApprovalQuery(XjsTechQueryRequest map, RequestPojo requestPojo);

    Result doAlreadyApprovedQuery(XjsTechQueryRequest map, RequestPojo requestPojo);

    Result doApprove(XjsTechApproveRequest map, RequestPojo requestPojo);

    Result doSendSms(XjsTechSendSmaRequest map, RequestPojo requestPojo);

    /**
     * 定时器
     */
    void addData();


    /**
     * 查询分析--新技术项目查询
     * @param map
     * @param requestPojo
     * @return
     */
    Result<XjsTechResponse> selectAllByPage(XjsTechQueryRequest map, RequestPojo requestPojo);

    /**
     * 统计新技术项目总数
     * @return
     */
    Result<XjsTechTotal> selectAllByTotal();

    /**
     * 统计条数，给项目编号，项目编号需要显示在前端
     *
     * @return Int
     */
    Result selectProjectNumber();
}
